<?php

namespace App\Http\Model;

use Illuminate\Support\Facades\Redis;

class PriorityMatchUserIds extends Base
{
    /**
     * 存储优先匹配的用户user_id
     *
     * @var string
     */
    private $cacheKey = 'PRIORITY:MATCH:USER:IDS';//缓存的key

    /**
     * 表名字
     *
     * @var string
     */
    public $table = 'priority_match_user_ids';

    /**
     * @var bool
     */
    public $timestamps = true;

    /**
     * 模型日期列的存储格式。
     *
     * @var string
     */
    protected $dateFormat = 'U';

    /**
     * 可以被批量赋值的属性。
     *
     * @var array
     */
    protected $fillable = ['id', 'user_id', 'created_at', 'updated_at'];

    /**
     * 构造函数
     *
     * @param array $attributes
     */
    public function __construct(array $attributes = [])
    {
        parent::__construct($this->table, $attributes);
    }

    /**
     * 添加
     *
     * @param int $userId
     * @return bool
     */
    public function add(int $userId): bool
    {
        if (self::query()->where('user_id', $userId)->count()) {
            return true;
        }

        self::query()->create(['user_id' => $userId]);
        Redis::SADD($this->cacheKey, $userId);
        return true;
    }

    /**
     * 删除用户
     *
     * @param int $userId
     * @return bool
     */
    public function del(int $userId): bool
    {
        self::query()->where('user_id', $userId)->delete();
        Redis::SREM($this->cacheKey, $userId);
        return true;
    }

    /**
     * 检测user_id是否存在
     *
     * @param int $userId
     * @return bool
     */
    public function checkExist(int $userId): bool
    {
        return Redis::SISMEMBER($this->cacheKey, $userId);
    }
}